# -*- coding: utf-8 -*-
'''
Created on 07/03/2011

@author: cgaray
@contact: cdaniel.py@gmail.com
@summary: representa un registro de una tabla especifica
'''

class OTDBase(object):
    '''
    representa un registro de una tabla especifica
    '''
    
    #atributos de la clase
    NOMBRE_CLASE = "OTDBase"
    
    nId          = 0
    cDescripcion = NOMBRE_CLASE
    
    
    def __init__(self, **parametros):
        '''inicializador de la clase
        nId          = identificador del registro
        cDescripcion = cualquier valor de cadena
        '''
        
        #si se recibe la cantidad minima de parametros requeridos
        if len(parametros) >= 2:
            self.nId          = parametros["nId"]
            self.cDescripcion = parametros["cDescripcion"]
            
        
    
    
    def __str__(self):
        '''representacion de la clase'''
        
        return "<%s: %s - %s>" % (self.NOMBRE_CLASE, self.nId, self.cDescripcion)
        
    
    
    def __cmp__(self, oOTDBaseParam):
        '''comparador de instancias'''
        
        if  self.nId < oOTDBaseParam.nId:
            return -1
        elif self.nId > oOTDBaseParam.nId:
            return 1
        else:
            return 0
            
        
    
    
    def Get_diccionario_campos(self):
        # usar dic(instancia)
        pass
    
    
#lanzador de prueba del modulo
if __name__ == '__main__':
    
    #implentacion de herecia basica
    class MiRegistroOTD(OTDBase):
        
        #un atributo extra
        nCampoExtra = 0
        
        #sobreescribimos el metodo de inicializacion
        def __init__(self, **parametros):
            '''inicializador de la clase
            '''
            
            __parametros = {}
            __parametros = parametros
            
            #si se recibe la cantidad minima de parametros requeridos
            if len(parametros) >= 2:
                self.nId          = parametros["nId"]
                self.cDescripcion = parametros["cDescripcion"]
                
            
            #asignamos los demas valores de atributos del objeto
            if __parametros.has_key("nCampoExtra"): self.nCampoExtra = parametros["nCampoExtra"]
            
        
    
    #prueba
    oRegistro = MiRegistroOTD(nId= 142, cDescripcion="Valor de Campo", nCampoExtra=14646.11)
    
    print "clase ", oRegistro
    print "string ", str(oRegistro)
    print "valor de campo extra", oRegistro.nCampoExtra
    
    